﻿using System;
using System.Collections.Generic;
using System.Web.Mvc;
using log4net;
using TheBullysStore.Models;
using TheBullysStore.Models.ModuloAdministracion.Banco;
using TheBullysStore.Models.ModuloAdministracion.DepartamentoPeru;
using TheBullysStore.Models.ModuloAdministracion.DistritoPeru;
using TheBullysStore.Models.ModuloAdministracion.Edificio;
using TheBullysStore.Models.ModuloAdministracion.ProvinciaPeru;

namespace TheBullysStore.Controllers.ModuloAdministracion.Edificio
{
    public class EdificioController : Controller
    {
        //
        // GET: /Edificio/
        private static ILog log = LogManager.GetLogger(typeof(EdificioController));
        private TheBullysStoreDB db = new TheBullysStoreDB();
        EdificioFacade edificioFacade = new EdificioFacade();
        BancoFacade bancoFacade = new BancoFacade();
        DepartamentoPeruFacade departamentoPeruFacade = new DepartamentoPeruFacade();
        ProvinciaPeruFacade provinciaPeruFacade = new ProvinciaPeruFacade();
        DistritoPeruFacade distritoPeruFacade = new DistritoPeruFacade();

        public ActionResult Index()
        {
            return View();
        }

        public ActionResult Edificio()
        {
            return View();
        }

        public ActionResult RegistrarEdificio()
        {
            return View();
        }

        public ActionResult BuscarEdificio()
        {
            return View();
        }

        public ActionResult LogoEdificio()
        {
            return View();
        }

        [HttpPost]
        public JsonResult registrarEdificio(EdificioBean edificio)
        {
            try
            {
                if (edificioFacade.Existeedificio(edificio))
                {
                    log.Warn("El edificio: \"" + edificio.Nombre + "\"ya ha sido creado");
                    return Json(new { me = "El edificio ya existe" });
                }

                string conexion = edificioFacade.Registraredificio(edificio);

                return Json(new { me = "Se ingreso correctamente " + edificio.Nombre });
               
            }
            catch (Exception ex){
                log.Error("Registrar Edificio - GET(EXCEPTION):", ex);
                return Json(new {me = "Ocurrió un error al registrar"});
            }
            
        }

        [HttpPost]
        public JsonResult buscarEdificio(EdificioBean edificio)
        {
            try
            {
                List<EdificioBean> listaEdificio = edificioFacade.Listaredificio(edificio);

                return Json(new { listaEdificio });
            }
            catch (Exception ex) {
                log.Error("Buscar Edificio - GET(EXCEPTION):", ex);
                return Json(new { listaEdificio = "Ocurrió un error al buscar" });
            }
            
        }

        [HttpPost]
        public JsonResult eliminarEdificio(EdificioBean edificio)
        {
            try {
                string conexion = edificioFacade.Eliminaredificio(edificio);

                return Json(new { me = "Se eliminó correctamente " + edificio.Nombre });     
            }
            catch (Exception ex)
            {
                log.Error("Eliminar Edificio - GET(EXCEPTION):", ex);
                return Json(new { me = "Ocurrió un error al eliminar" });
            }            
        }

        [HttpPost]
        public JsonResult modificarEdificio(EdificioBean edificio)
        {
            try
            {
                string conexion = edificioFacade.Modificaredificio(edificio);
           
                return Json(new { me = "Se modificó correctamente el edificio " + edificio.Nombre });
            }
            catch (Exception ex)
            {
                log.Error("Modificar Edificio - GET(EXCEPTION):", ex);
                return Json(new { me = "Ocurrió un error al modificar" });
            }   
        }

        [HttpPost]
        public JsonResult cargarBancos(BancoBean banco)
        {
            try
            {
                List<BancoBean> listaBanco = bancoFacade.ListarBanco(banco);

                return Json(new { listaBanco });
            }

            catch (Exception ex)
            {
                log.Error("CargarBancos - GET(EXCEPTION):", ex);
                return Json(new { listaBanco = "Ocurrió un error al cargar los Bancos" });
            }            
        }

        [HttpPost]
        public JsonResult cargarDepartamentos(DepartamentoPeruBean departamento)
        {
            try
            {
                List<DepartamentoPeruBean> listaDepartamentoPeru = departamentoPeruFacade.ListarDepartamentoPeru(departamento);

                return Json(new { listaDepartamentoPeru });
            }

            catch (Exception ex)
            {
                log.Error("CargarDepartamento - GET(EXCEPTION):", ex);
                return Json(new { listaDepartamentoPeru = "Ocurrió un error al cargar los Departamentos" });
            }  
            
        }

        [HttpPost]
        public JsonResult cargarProvincias(DepartamentoPeruBean departamento)
        {
            try
            {
                List<ProvinciaPeruBean> listaProvinciaPeru = provinciaPeruFacade.ListarProvinciaPeru(departamento);

                return Json(new { listaProvinciaPeru });
            }
            catch (Exception ex)
            {
                log.Error("CargarProvincia - GET(EXCEPTION):", ex);
                return Json(new { listaProvinciaPeru = "Ocurrió un error al cargar las Provincias" });
            } 
        }

        [HttpPost]
        public JsonResult cargarDistritos(ProvinciaPeruBean provincia)
        {
            try
            {
                List<DistritoPeruBean> listaDistritoPeru = distritoPeruFacade.ListarDistritoPeru(provincia);

                return Json(new { listaDistritoPeru });
            }

            catch (Exception ex)
            {
                log.Error("CargarDistrito - GET(EXCEPTION):", ex);
                return Json(new { listaDistritoPeru = "Ocurrió un error al cargar los Distritos" });
            } 
        }
    }
}
